package com.ad.platform.common.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

import java.util.List;
import java.util.Map;

/**
 * @author dxgong
 * @日期 2018/8/22 15:43
 * @注释: Json工具类 - 基于阿里巴巴的fastJson
 */
public class FastJsonUtil {
    /**
     * 功能描述：把JSON数据转换成指定的java对象
     *
     * @param jsonData JSON数据
     * @param clazz    指定的java对象
     * @return 指定的java对象
     */
    public static <T> T getJsonToBean(String jsonData, Class<T> clazz) {
        return JSON.parseObject(jsonData, clazz);
    }

    /**
     * 功能描述：把java对象转换成JSON数据
     *
     * @param object java对象
     * @return JSON数据
     */
    public static String getBeanToJson(Object object) {
        return JSON.toJSONString(object);
    }

    /**
     * 功能描述：把JSON数据转换成指定的java对象列表
     *
     * @param jsonData JSON数据
     * @param clazz    指定的java对象
     * @return List<T>
     */
    public static <T> List<T> getJsonToList(String jsonData, Class<T> clazz) {
        return JSON.parseArray(jsonData, clazz);
    }

    /**
     * 功能描述：把JSON数据转换成较为复杂的List<Map<String, Object>>
     *
     * @param jsonData JSON数据
     * @return List<Map   <   String   ,   Object>>
     */
    public static List<Map<String, Object>> getJsonToListMap(String jsonData) {
        return JSON.parseObject(jsonData, new TypeReference<List<Map<String, Object>>>() {
        });
    }

    /**
     * 把map集合转换json
     *
     * @param map 集合
     * @return String
     */
    public static String getJsonToMap(Map map) {
        String s = JSON.toJSONString(map);
        return s;
    }

    /**
     * 把json格式字符串转化成jsonObject
     *
     * @param str json格式字符串
     * @return JSONObject
     */
    public static JSONObject getJsonObjectToJsonStr(String str) {
        return JSONObject.parseObject(str);
    }


    /**
     * 数组转JsonArray
     *
     * @param arr 需要转JSONArray的数组
     * */
    public static JSONArray getJSONArrayFromArray(String[] arr){
        return (JSONArray) JSONArray.toJSON(arr);
    }

}
